zimfw() {
  builtin emulate -L zsh -o EXTENDED_GLOB
  local -r _zversion='<%= version %>' zusage="Usage: %B${0}%b <action> [%B-q%b|%B-v%b]

Actions:
  %Bbuild%b           Build %B${ZIM_HOME}/init.zsh%b and %B${ZIM_HOME}/login_init.zsh%b.
                  Also does %Bcheck-dumpfile%b and %Bcompile%b. Use %B-v%b to also see their output.
  %Bcheck-dumpfile%b  Does %Bclean-dumpfile%b if new completion configuration needs to be dumped.
  %Bclean%b           Clean all. Does both %Bclean-compiled%b and %Bclean-dumpfile%b.
  %Bclean-compiled%b  Clean Zsh compiled files.
  %Bclean-dumpfile%b  Clean completion dumpfile.
  %Bcompile%b         Compile Zsh files.
  %Bhelp%b            Print this help.
  %Binfo%b            Print Zim and system info.
  %Blist%b            List all modules currently defined in %B<%= home %>/.zimrc%b.
                  Use %B-v%b to also see the modules details.
  %Binit%b            Same as %Binstall%b, but with output tailored to be used at terminal startup.
  %Binstall%b         Install new modules. Also does %Bbuild%b, %Bcheck-dumpfile%b and %Bcompile%b. Use %B-v%b to
                  also see their output, and see skipped modules.
  %Buninstall%b       Delete unused modules. Prompts for confirmation. Use %B-q%b for quiet uninstall.
  %Bupdate%b          Update current modules. Also does %Bbuild%b, %Bcheck-dumpfile%b and %Bcompile%b. Use %B-v%b
                  to also see their output, and see skipped modules.
  %Bupgrade%b         Upgrade zimfw. Also does %Bcompile%b. Use %B-v%b to also see its output.
  %Bversion%b         Print zimfw version.

Options:
  %B-q%b              Quiet (yes to prompts, and only outputs errors)
  %B-v%b              Verbose (outputs more details)"
  local -a _zdisabled_dirs _zdirs _zfpaths _zfunctions _zcmds _zmodules_zargs _zunused_dirs
  local -i _zprintlevel=1
  if (( # > 2 )); then
     print -u2 -PlR "%F{red}${0}: Too many options%f" '' ${zusage}
     return 2
  elif (( # > 1 )); then
    case ${2} in
      -q) _zprintlevel=0 ;;
      -v) _zprintlevel=2 ;;
      *)
        print -u2 -PlR "%F{red}${0}: Unknown option ${2}%f" '' ${zusage}
        return 2
        ;;
    esac
  fi

  if ! zstyle -t ':zim' disable-version-check; then
    _zimfw_version_check
  fi

  local _zrestartmsg=' Restart your terminal for changes to take effect.'
  case ${1} in
    build)
      _zimfw_source_zimrc 2 && _zimfw_build || return 1
      (( _zprintlevel-- ))
      _zimfw_check_dumpfile && _zimfw_compile
      ;;
    check-dumpfile) _zimfw_source_zimrc 2 && _zimfw_check_dumpfile ;;
    clean) _zimfw_source_zimrc 2 && _zimfw_clean_compiled && _zimfw_clean_dumpfile ;;
    clean-compiled) _zimfw_source_zimrc 2 && _zimfw_clean_compiled ;;
    clean-dumpfile) _zimfw_clean_dumpfile ;;
    compile) _zimfw_compile ;;
    help) print -PR ${zusage} ;;
    info) _zimfw_info ;;
    list)
      _zimfw_source_zimrc 3 && zargs -n 10 -- "${_zmodules_zargs[@]}" -- _zimfw_run_list && \
          _zimfw_list_unuseds ' (unused)'
      ;;
    init)
      _zrestartmsg=
      _zimfw_install_update install || return 1
      (( _zprintlevel-- ))
      _zimfw_print -PR "<%= done %>Done with install.${_zrestartmsg}" # Only printed in verbose mode
      _zimfw_source_zimrc 2 && _zimfw_build && _zimfw_check_dumpfile && _zimfw_compile
      ;;
    install|update)
      _zimfw_install_update ${1} || return 1
      _zimfw_print -PR "<%= done %>Done with ${1}.${_zrestartmsg}"
      (( _zprintlevel-- ))
      _zimfw_source_zimrc 2 && _zimfw_build && _zimfw_check_dumpfile && _zimfw_compile
      ;;
    uninstall) _zimfw_source_zimrc 2 && _zimfw_list_unuseds && _zimfw_uninstall ;;
    upgrade)
      _zimfw_upgrade || return 1
      (( _zprintlevel-- ))
      _zimfw_compile
      ;;
    version) print -PR ${_zversion} ;;
    *)
      print -u2 -PlR "%F{red}${0}: Unknown action ${1}%f" '' ${zusage}
      return 2
      ;;
  esac
}
